<?php
/**
 * Crud para upload de varios arquivos e insercao de seus
 * respectivos registros em uma tabela
 * @author web-10
 *
 */
class PC4_Crud_Arquivo extends PC4_Crud_Upload2 {
	
	protected $camposExtras;
	
	public function __construct($caminho = '', $tabela = 'fotos', $camposExtras = array(), $uploads = array(), $validacoes = array()) {
		$this->camposExtras = $camposExtras;
		parent::__construct($caminho, $tabela, $uploads, $validacoes);
	}
	/**
	 * Faz Upload dos arquivos $_FILES[$registros['campo_arquivo']].
	 * Insere $umRegistro na tabela de arquivos. $umRegistro = $_FILES[]['name']
	 * 
	 * @param $registros - {campo_arquivo: string, $this->campoRelacionado: int}
	 * @param $nome_id
	 * @param $tipos
	 * @param $debug
	 */
	function insereVarios($registros, $nome_id = 'id', $tipos = array('tipos' => array('gif', 'jpg', 'jpeg', 'png', 'jpe')), $debug = false) {
		
		$this->arquivos = $this->trataVariosUpload($registros['campo_arquivo'], $tipos, 10240);
		
		if (empty($this->erros)) {
			$rs = $this->preProcessa($registros);
			return parent::insereVarios($rs, $nome_id, $tipos, $debug);
		}
		else {
			return array($this->erros);
		}
	}
	
	function preProcessa($registros) {
		$rs = array();
//d($this->arquivos); die;
		foreach ($this->arquivos as $c => $arquivo) {
			
			// Registro da tabela de arquivos
			$umRegistro = array(
				'arquivo' => $arquivo['name']
			);
			
			if (!empty($this->camposExtras)) {
				foreach((array)$this->camposExtras as $camposExtras){
					$umRegistro[$camposExtras] = (is_array($registros[$camposExtras])) ? $registros[$camposExtras][$c] : $registros[$camposExtras];
				}
			}
			$rs[] = $umRegistro;
		}
		return $rs;
	}
	
}

?>